package com.zs.lib_base.ext

import android.text.TextUtils
import com.zs.lib_base.utils.Md5Utils

/**
 * 将字符串分割为字符list
 * @param separator 分隔符
 */
fun String.toList(separator: String = "&"): List<String> {
    return this.split(separator)
        .filter { !TextUtils.isEmpty(this) }
}

/**
 * 循环判断当前字符是否包含keys列表里面的字符
 */
fun String.contains(keys: List<String>?): Boolean {
    keys ?: return false

    if (TextUtils.isEmpty(this) || keys.isEmpty()) return false

    keys.filter { !TextUtils.isEmpty(it) }.forEach {
        if (contains(it)) return true
    }
    return false
}

/**
 * 循环判断当前字符是否包含keys列表里面的字符,如果匹配上了，就返回该字符
 */
fun String.containsStr(keys: List<String>?): String {
    keys ?: return ""

    if (TextUtils.isEmpty(this) || keys.isEmpty()) return ""

    keys.filter { !TextUtils.isEmpty(it) }.forEach {
        if (contains(it)) return it
    }
    return ""
}

/**
 * 循环判断当前字符是否包含keys列表里面的字符 并返回
 */
fun String.containsReturn(keys: List<String>?): String? {
    keys ?: return null

    if (TextUtils.isEmpty(this) || keys.isEmpty()) return null
    keys.filter { !TextUtils.isEmpty(it) }.forEach {
        if (contains(it)) return it
    }
    return null
}

/**
 * 判断字符是否包含keys
 * @param keys 需&号切割成list
 */
fun String.containsKeys(keys: String): Boolean {
    return contains(keys.toList())
}

/**
 * 判断字符是否包含keys，返回字符串
 * @param keys 需&号切割成list
 */
fun String.containsKeysStr(keys: String): String {
    return containsStr(keys.toList())
}

/**
 * 判断字符是否包含keys 并返回
 * @param keys 需&号切割成list
 */
fun String.containsKeysReturn(keys: String): String? {
    return containsReturn(keys.toList())
}

fun String.md5(): String {
    return Md5Utils.md5(this)
}